package com.wlyuan.open.api;

import com.wlyuan.open.dto.api.*;
import com.wlyuan.open.vo.OpenApiCompanyDetailVO;
import com.wlyuan.open.vo.OpenApiCompanyVO;
import com.wlyuan.utils.Page;

/**
 * @author lijing
 */
public interface IOpenApiCompanyService {

    /**
     * 申请接口
     *
     * @param creation
     */
    void create(OpenApiCompanyCreationDTO creation);

    /**
     * 管理中台 - 获取申请接口列表
     *
     * @param filter
     * @return
     */
    Page<OpenApiCompanyDetailVO> search(OpenApiCompanyFilterDTO filter);

    /**
     * 获取客户端api接口管理
     *
     * @param filter
     * @return
     */
    Page<OpenApiCompanyVO> list(OpenApiCompanyDTO filter);

    /**
     * 同意
     *
     * @param examineDTO
     */
    void examine(OpenApiCompanyExamineDTO examineDTO);

    /**
     * 拒绝
     *
     * @param rejectDTO
     */
    void reject(OpenApiCompanyRejectDTO rejectDTO);

    /**
     * 启用
     *
     * @param enableDTO
     */
    void enable(OpenApiCompanyEnableDTO enableDTO);

    /**
     * 禁用
     *
     * @param disableDTO
     */
    void disable(OpenApiCompanyDisableDTO disableDTO);

    /**
     * 获取所调用的接口信息
     *
     * @param appId
     * @return
     */
    OpenApiCompanyDetailVO getOpenApiInfo(String appId, Long apiId);

    /**
     * api 接口调用
     *
     * @param openApiInfoVo
     */
    void apiCall(OpenApiCompanyDetailVO openApiInfoVo);
}
